package com.yan.utils;

import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * Created by yanl_ on 2018/4/26.
 */
public class ExceptionUtils {
    @Autowired
//    private IRedisDao redisDao;
//
//    @Override
//    public boolean addExceptionToRedis(Exception ex) {
//        try {
//            String mapKey = ex.getClass().getName() + " : " + ex.getMessage() + ".| Caused by " +
//                    getOurErrStackMsg(ex);
//
//            if (!redisDao.HasKey(RedisKey.EXCEPTION_KEY)) {
//                Map<String, Object> map = new HashMap<>();
//                map.put(mapKey, 1 + "");
//                redisDao.setAllHashString(RedisKey.EXCEPTION_KEY, map, 1, TimeUnit.HOURS);
//            } else {
//                if (redisDao.HasHashKey(RedisKey.EXCEPTION_KEY, mapKey)) {
    //  return stringRedisTemplate.opsForHash().get(rkey, mkey);
//                    Integer count = Integer.parseInt(redisDao.GetHashMapValue(RedisKey.EXCEPTION_KEY, mapKey)
//                            .toString());
    //           stringRedisTemplate.opsForHash().put(redisKey, mapKey, JSON.toJSONString(mapValue));
//                    redisDao.setHashValue(RedisKey.EXCEPTION_KEY, mapKey, ++count);
//                } else {
//                    redisDao.setHashValue(RedisKey.EXCEPTION_KEY, mapKey, 1);
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//            return false;
//        }
//        return true;
//    }

    /**
     * 获取项目中错误信息
     *
     * @param ex
     * @return
     */
    private String getOurErrStackMsg(Exception ex) {
        StackTraceElement[] ste = ex.getStackTrace();
        String errMsg = "";
        for (int i = 0; i < ste.length; i++) {
            String stackMsg = ste[i].toString();
            if (stackMsg.startsWith("com.weshare")) {
                errMsg = stackMsg;
                break;
            }
        }
        return errMsg;
    }
}
